package com.itany.corejava.code12_线程;

/**
 * @author MissChen
 * @version 1.0
 * @date 2023 年11月29日 17:33
 */

/**
 * 定义一个线程类
 *有一个包包的数量是100个，线程模拟从实体店和官网进行售卖，分别打印实体店和官网卖出包包的信息，统计官网和实体店各卖出了多少个包包
 * 控制台输出如下:
 *  从XX售出了一个包
 *  最后官网销售出多少个包
 *  实体店共销售多少个包
 */
public class Test13 {
    public static void main(String[] args) {
        MyThreadBag myThreadBag=new MyThreadBag();
        Thread t1=new Thread(myThreadBag);
        t1.setName("实体店");
        Thread t2=new Thread(myThreadBag);
        t2.setName("官网");

        t1.start();
        t2.start();

    }
}
class MyThreadBag implements Runnable{
    int bags=100;
    int c1=0;//网店
    int c2=0;//实体店
    int count=1;
    static Object o=new Object();

    @Override
    public void run() {
        while(true){
            synchronized (o){
                if(bags>0){
                    if("实体店".equals(Thread.currentThread().getName())){
                        c2++;
                        System.out.println(Thread.currentThread().getName()+"销售了一个包:"+c2);
                    }else{//官网在售卖
                        c1++;
                        System.out.println(Thread.currentThread().getName()+"销售了一个包:"+c1);
                    }
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    bags--;
                }
                if(bags==0){
                    if(count==1){
                        System.out.println("官网销售了"+c1+",实体店销售了"+c2);
                        count++;
                    }

                    break;
                }
            }
        }
    }
}